/**
 * API请求封装
 * 根据环境自动切换API基础URL
 */

// 环境判断
const getBaseUrl = () => {
  // 小程序环境中使用固定的生产环境地址
  // 开发环境可通过条件编译或环境变量切换
  return 'https://ms3191793zs.vicp.fun/api';
};

// 基础URL配置
const BASE_URL = getBaseUrl();

/**
 * 统一请求方法
 * @param {Object} options 请求配置
 * @returns {Promise}
 */
function request(options) {
	return new Promise((resolve, reject) => {
		uni.request({
			url: BASE_URL + options.url,
			method: options.method || 'GET',
			data: options.data || {},
			header: {
				'Content-Type': 'application/json',
				...options.header
			},
			success: (res) => {
				if (res.statusCode === 200) {
					// 根据后端返回的数据结构处理
					if (res.data.code === 200 || res.data.code === 0) {
						resolve(res.data.data || res.data)
					} else {
						uni.showToast({
							title: res.data.message || '请求失败',
							icon: 'none'
						})
						reject(res.data)
					}
				} else {
					uni.showToast({
						title: `请求失败: ${res.statusCode}`,
						icon: 'none'
					})
					reject(res)
				}
			},
			fail: (err) => {
				uni.showToast({
					title: '网络请求失败',
					icon: 'none'
				})
				reject(err)
			}
		})
	})
}

/**
 * GET请求
 */
export function get(url, params = {}) {
	return request({
		url: url + (Object.keys(params).length > 0 ? '?' + Object.keys(params).map(key => `${key}=${params[key]}`).join('&') : ''),
		method: 'GET'
	})
}

/**
 * POST请求
 */
export function post(url, data = {}) {
	return request({
		url,
		method: 'POST',
		data
	})
}

/**
 * DELETE请求
 */
export function del(url) {
	return request({
		url,
		method: 'DELETE'
	})
}

export default {
	get,
	post,
	delete: del
}

